import { IState, ITodo, TODO_STATUS } from "@/typing";
const SET_TODO: string = 'SET_TODO';
const SET_TODO_LIST: string = 'SET_TODO_LIST';
const REMOVE_TODO: string = 'REMOVE_TODO';
const SET_TODO_STATUS: string = 'SET_TODO_STATUS';
const SET_DOING_STATUS: string = 'SET_TODO_DOING';
export default {
    [SET_TODO](state: IState, todo: ITodo): void {
        // state.list.unshift(todo);
        state.list = [todo, ...state.list];
        //   console.log(state.list);
    },
    [SET_TODO_LIST](state: IState, todoList: ITodo[]): void {
        state.list = todoList;
    },
    [REMOVE_TODO](state: IState, id: number): void {
        state.list = state.list.filter((item: ITodo) => item.id !== id);
        // console.log(state.list);
    },
    [SET_TODO_STATUS](state: IState, id: number): void {
        state.list = state.list.map((item: ITodo) => {
            if (item.id === id) {
                switch (item.status) {
                    case TODO_STATUS.FINISHED:
                        item.status = TODO_STATUS.WILLDO;
                        break;
                    case TODO_STATUS.WILLDO:
                    case TODO_STATUS.DOING:
                        item.status = TODO_STATUS.FINISHED;
                        break;
                    default:
                        break;
                }
            }
            return item;
        });
    },
    [SET_DOING_STATUS](state: IState, id: number): void {
        state.list = state.list.map((item: ITodo) => {
            if (item.id !== id) {
                if (item.status === TODO_STATUS.DOING) {
                    item.status = TODO_STATUS.WILLDO;
                }
            } else {
                item.status = item.status === TODO_STATUS.WILLDO
                    ? TODO_STATUS.DOING
                    : TODO_STATUS.WILLDO
            }
            return item;
        });
    }
}